package com.xiyu.service.repository.material.info;

import com.xiyu.service.vo.material.supplier.SupplierPageQueryInput;
import com.xiyu.service.model.material.info.MaterialSupplier;
import com.xiyu.service.model.material.info.MaterialSupplierTable;
import org.babyfish.jimmer.spring.repository.JRepository;
import org.babyfish.jimmer.Page;
import org.springframework.util.StringUtils;
import java.util.Optional;

public interface MaterialSupplierRepository extends JRepository<MaterialSupplier, Long> {
    MaterialSupplierTable materialSupplierTable = MaterialSupplierTable.$;

    default Page<MaterialSupplier> pageQuery(SupplierPageQueryInput inputVO){
        return sql().createQuery(materialSupplierTable)
                .whereIf(StringUtils.hasText(inputVO.getSupplierName()), () -> materialSupplierTable.supplierName().like(inputVO.getSupplierName()))
                .whereIf(StringUtils.hasText(inputVO.getSupplierMobile()), () -> materialSupplierTable.supplierMobile().like(inputVO.getSupplierMobile()))
                .whereIf(StringUtils.hasText(inputVO.getSupplierDirector()), () -> materialSupplierTable.supplierDirector().like(inputVO.getSupplierDirector()))
                .whereIf(inputVO.getSupplierProperty() != null, materialSupplierTable.supplierProperty().eq(inputVO.getSupplierProperty()))
                .orderBy(materialSupplierTable.id().desc())
                .select(materialSupplierTable)
                .fetchPage(inputVO.getPageNo() - 1, inputVO.getPageSize());
    }

    Optional<MaterialSupplier> findFirstBySupplierName(String supplierName);


}